<?php 
namespace Home\Model;
use Think\Model;
/*
	自定义二维码类
*/
class CustomcodeModel extends Model {

    protected $tableName = 'generalize_qrcode';

    /**
     *  查看系统是否开启了设置
     * 
     * @return array  array('type'=>1,'msg'=>'后台设置了模板，开启了自定义二维码'); type 用于 传递方法
     *
     **/
    public function open_custom_setting(){
        //是否开启了自定义二维码
        $option_value = M('Options')->where(array('option_name'=>'open_custom_code'))->getField('option_value');
        //后台是否设置了模板
        $system_setting = M('GeneralizeQrcode')->where(array('status'=>1))->field('picture,id')->find();

        if($system_setting && $option_value){
            return array('type'=>1,'msg'=>'后台设置了模板，开启了自定义二维码');
        }else if($system_setting && !$option_value){
            return array('type'=>2,'msg'=>'后台设置了模板，但是没有开启自定义模板');
        }else if(!$system_setting && !$option_value){
            return array('type'=>3,'msg'=>'后台没有设置模板，没有开启自动以模板');
        }else if(!$system_setting && $option_value){
            return array('type'=>4,'msg'=>'后台没有设置模板，开启了自动模板');
        }
    }


    /**
     * 根据用户设置，返回系统二维码 或者是 自定义二维码
     * @param int $uid
     * @return string    //返回url链接
     */
    public function return_different_code($uid){

        //查询系统二维码，查询自定义二维码
        $system_setting  = M('User')->where(array('id'=>$uid))->field('use_system_code,use_custom_code')->find();

        //使用了系统二维码
        if($system_setting['use_system_code'] && !$system_setting['use_custom_code']){
            //系统合成图片
            $system_url = "Uploads/paramcode/system/system_".$uid. ".jpg";

            //判断是否超过时间
            //文件是否过期
            $altertime = filemtime($system_url);
            //没有超过4小时，返回路径
            if(($altertime+14400) > NOW_TIME && !empty($altertime)){
                return array('code_img'=>$system_url,'code'=>'');

            }else{
                //重新合成图片
                $this->compound_picture($uid);
                return array('code_img'=>$system_url,'code'=>'');
            }
        }else if(!$system_setting['use_system_code'] && $system_setting['use_custom_code']){ //使用了自定义二维码
            //返回自定义二维码
            $code_img = $this->code_url($uid);

            if(!$code_img){
                $code =  $this->return_wx_code($uid);
                return array('code_img'=>'','code'=>$code);
            }else{
                return array('code_img'=>$code_img,'code'=>'');
            }
        }else{
                //返回微信二维码
                $code =  $this->return_wx_code($uid);
                return array('code_img'=>'','code'=> $code);

        }
    }

    /**
     * //根据系统设置，更新用户数据(用于用户设置use_system_code,use_custom_code都为0的情况，更新use_systen_code)
     * @param int $uid   用户id
     * @param int $type  系统设置类型（open_custom_setting方法生成）
     * @return
     */

    public function update_user_setting($uid,$type){

        if(empty($uid) || empty($type)){
            return false;
        }

        //查询系统设置
        $system_setting  = M('User')->where(array('id'=>$uid))->field('use_system_code,use_custom_code')->find();

        if(!$system_setting['use_system_code'] && !$system_setting['use_custom_code']){
            if(($type == 1 || $type == 2)){

                $return_id = M('User')->where('id = %d and use_system_code = 0 and use_custom_code = 0',$uid)->save(array('use_system_code'=>1));

                if($return_id !== false){
                    //合成图片
                    $this->compound_picture($uid);
                }
            }
        }else if(!$system_setting['use_system_code'] && $system_setting['use_custom_code']){
            //如果是后台更改自定义二维码
            if($type == 2){
                M('User')->where('id = %d and use_system_code = 0 and use_custom_code = 1',$uid)->save(array('use_system_code'=>1,'use_custom_code'=>0));
            }else if($type == 3){
                M('User')->where('id = %d and use_system_code = 0 and use_custom_code = 1',$uid)->save(array('use_system_code'=>0,'use_custom_code'=>0));
            }
        }else{
            return false;

        }
    }

    /**
     * 根据类型情况生成html
     * @param int $type  系统设置类型（open_custom_setting方法生成
     * @return string   html显示
     */

    public function return_html($type){
        if(!$type){
            return false;
        }
        $html = '';
        if($type == 1){
            $html .= "<div style='text-align:center;width:80%;margin:0 auto'><button class='input_e_s' ><a href='javascript:void(0)' onclick='use_system()' style='color:#ffffff'>系统二维码</a></button><button class='input_e_s' style='background-color: #E54040;float:right'><a href='".U('Login/change_code')."' style='color:#ffffff'>自定义二维码</a></button></div><div style='clear:both'></div>";
        }else if($type == 4){
            $html .= "<div style='text-align:center;width:80%;margin:0 auto'><button class='input_e_s' style='background-color: #E54040;width:100%;'><a href='".U('Login/change_code')."' style='color:#ffffff'>自定义二维码</a></button></div><div style='clear:both'></div>";
        }
        return $html;
    }


    /**
     * 合成图片(系统二维码图片合成)
     * @param int $uid 会员id
     */

    public function compound_picture($uid){

        //如果是uid为空
        if(empty($uid)){
            return false;
        }

        //查询当前系统模板信息
        $qrcode_array = M('GeneralizeQrcode')->where(array('status'=>1))->field('picture,id')->find();

        if(!empty($qrcode_array)){
            $data = M('GeneralizeCustom')->where(array('generalize_id'=>$qrcode_array['id']))->find();
        }else{
            return false;
        }

        //头像
        $member_information = M('User')->where(array('id'=>$uid))->field('thumb,username')->find();

        //参数放入数组
        $data['uid'] = $uid;
        $data['picture'] = $qrcode_array['picture'];
        $data['thumb'] = ".".$member_information['thumb'];
        $data['username'] = $member_information['username'];
        //获取合成图片
        Vendor('Wechat.paramCode');

        $savedir = "Uploads/paramcode/system/";
        $savename = "system_".$uid . ".jpg";

        CreateSystemCode($savedir, $savename, $data);

    }


    /**
     * 二维码封装(用于检测，超时合成自定义二维码。没有超时返回自定义二维码)
     * @param int $uid  用户id
     * @return string $code 微信二维码 $code_img 合成自定义二维码
     */

   public function code_url($uid){

        //搜寻是否有模板信息，有就读取图片
        $result = M('CustomCode')->where('uid = %d',$uid)->field('id,param')->find();
        if(!empty($result)){
            $code_img  = 'Uploads/paramcode/compound/compound_'.$uid.'.jpg';
            //文件是否过期
            $altertime = filemtime($code_img);
            //没有超过28天，返回路径
            //返回2421000
            if(($altertime+2421000) > NOW_TIME && !empty($altertime)){
                return $code_img;
            }else{
                //重新生成图片
                Vendor('Wechat.paramCode');
                $savedir = "Uploads/paramcode/compound/";
                $savename = "compound_" .$uid . ".jpg";
                $data     = unserialize($result['param']);
                $data['uid'] = $uid;
                createParamCodeCard($savedir, $savename, $data);
                return $code_img;
            }
        }else {
            return  false;
        }
    }

    /**
     * 返回微信二维码
     * @param int $uid  用户id
     * @return string
     */

    public function return_wx_code($uid){

        $code = create_qrcode($uid,false);

        if(!empty($code)){
            $code =  base64_encode(urldecode($code));
        }
        return $code;
    }
    
}
